package com.jc.common.util;

import java.lang.reflect.Type;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

/**********************************************
 * <p>
 * 说明：JSON工具类【包含两种方式转换】
 * </p>
 * 
 * @date 2015年5月26日 上午11:26:59
 * @version 2.0.1 <br/>
 **********************************************
 */
public class JSONUtil {
	private static final Gson	gson	= new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
	private static final Gson	gson1	= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();

	public static JSONObject toFastJson(Object object) {
		return (JSONObject) JSON.toJSON(object);
	}

	/** Json转换字符串 */
	public static String toFastJsonString(Object object) {
		return JSON.toJSONString(object);
	}

	/** Gson转换字符串【dateFormat=yyyy-MM-dd】 */
	public static String toGsonString(Object o) {
		return gson.toJson(o);
	}

	/** Gson转换字符串【dateFormat=yyyy-MM-dd HH:mm:ss】 */
	public static String toGsonString2(Object o) {
		return gson1.toJson(o);
	}

	/** Fastjson字符串转换实体bean */
	public static <T> T fastJsonToObj(String json, Class<T> class1) {
		return JSON.parseObject(json, class1);
	}

	/** Gson字符串转换实体bean */
	public static <T> T gsonToObj(String json, Class<T> class1) {
		return gson.fromJson(json, class1);
	}

	/** Gson转换List */
	public static <T> List<T> gsonTolist(String json, Class<T> class1) {
		return gson.fromJson(json, new TypeToken<List<T>>() {}.getType());
	}

	/** Gson转换List */
	public static List<?> gsonTolist(String json, TypeToken<?> typeToken) {
		return gsonTolist(json, typeToken.getType());
	}

	/** Gson转换List */
	public static List<?> gsonTolist(String json, Type type) {
		return gson.fromJson(json, type);
	}

}